<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Requests;
//使用类
use App\Http\Controllers\Controller;

class SliderController  extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {   
        //分页数据
        $count = $request -> input('count',4);
        $search = $request -> input('search','');
        $request=$request->all();

        //查询数据库
        $data=\DB::table("slider")
            ->where("title",'like','%'.$search.'%')
            ->orderBy('orders','desc')
            ->paginate($count);
      
        // 加载页面
        return view("admin.sys.slider.index")->with('request',$request)->with("data",$data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
       return view("admin.sys.slider.create");
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {   


        //接受表单数据

        $data=$request->except("_token","img");
        
        //检测文件是否上传
         if($request -> hasFile('img')){
            // 处理文件名称
            $temp_name = md5(time()+rand(1000,9999));
            // 获取后缀
            $hz = $request -> file('img') ->getClientOriginalExtension();
          
            // 文件路径
            $temp_path = './Uploads/lun'; 
              // 拼接文件名
            $name = ltrim($temp_path.'/'.$temp_name.'.'.$hz,'.');
            $temp_name2 =  $temp_name.'.'.$hz;
        
            // 文件上传
            //第一个参数上传文件位置 第二个参数文件名
            $res=$request -> file('img') -> move($temp_path,$temp_name2);

                    if($res){
                          // 表单验证的规则

                        $rules=[
                            'title' => 'required|unique:slider', 
                            'href' => 'required',
                        ];
                        // 表单验证的提示信息

                        $message=[

                            "title.required"=>"请输入标题",
                            "title.unique"=>"标题已存在",
                            "href.required"=>"请输入链接",
                        ];

                        // 使用laravel的表单验证
                        $this->validate($request,$rules,$message);

                        $data['createtime']=time();
                        $data['img']=$name;

                        //插入数据库
                        $res2=\DB::table("slider")->insert($data);
                        if($res2){

                            return redirect('admin/sys/slider')->with('success','添加成功');
                        }else{
                            return back()->with('error','添加失败');
                        }
                    }else{

                         return back()->with('error','文件上传失败');
                    }

         }else{
             return back()->with('error','没有文件上传');
         }

      
 
  }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {

        // 查询数据库

        $data=\DB::table("slider")->find($id);

        //分配数据
       return view('admin.sys.slider.edit')->with("data",$data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //

        $data=$request->except('_token',"_method");

        $reg=\DB::table("slider")->where('id',$id)->first();
        
        if($data['title']==$reg['title']){
            unset($data['title']);
        }
       

            $rules=[
                'title' => 'required', 
                'href' => 'required',
            ];
            // 表单验证的提示信息

            $message=[

                "title.required"=>"请输入标题",
                "href.required"=>"请输入链接",
            ];

            // 使用laravel的表单验证
            $this->validate($request,$rules,$message);

            //判断是否修改图片
            $img=array_keys ( $data );
            $b=in_array ( 'img' ,  $img ,  true );

            //如果上传图片执行图片修改
            if($b){

                //调用上传图片方法
                //$name "/Uploads/lun/be5fe2ee8632df79f03c44335193f8ba.jpg"  为数据库全路径
                $name=self::getImg($request);
              

                if($name){

                    $data['img']=$name;

                    //删除原有文件
                    $filePath=$reg['img'];

                    $re = \Storage::disk('public')->delete($filePath);

                }else{

                    return back()->with('error','上传失败');
                }
            }

            $res=\DB::table("slider")->where('id',$id)->update($data);
          
          if($res){

             return redirect('admin/sys/slider')->with('success','修改成功');

         }else{

             return back()->with('error','修改失败');
        }

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
         //查找这个图片
         $reg=\DB::table("slider")->where('id',$id)->first();

         //删除原有文件
         $filePath=$reg['img'];

         $re = \Storage::disk('public')->delete($filePath);
        if (\DB::table("slider")->delete($id)) {
   
            return "1";
        }else{
            return 0;
        }
    }




     /**
     * 修改轮播图状态的方法
     *
     * @param  
     * @return \Illuminate\Http\Response
     */

    public function ajaxStatu(Request $request)
    {

        $arr=$request->except('_token');
    // dd($arr);
        if (\DB::update("update slider set status= $arr[status] where id=$arr[id]")) {
            # code...
            echo 1;
        }else{
            echo 0;
         }
    }


     // 处理图片上传
    static public function getImg(Request $request)
    {
         
            // 处理文件名称
            $temp_name = md5(time()+rand(1000,9999));
            // 获取后缀
            $hz = $request -> file('img') ->getClientOriginalExtension();
          
            // 文件路径
            $temp_path = './Uploads/lun'; 
              // 拼接文件名
            $name = ltrim($temp_path.'/'.$temp_name.'.'.$hz,'.');
            $temp_name2 =  $temp_name.'.'.$hz;
        
            // 文件上传
            //第一个参数上传文件位置 第二个参数文件名
            $res=$request -> file('img') -> move($temp_path,$temp_name2);

            return $name;
                  
    }

}
